Anil's CheatSheet for AS7 Development

Objective: Set up Marcus's GIT master as a remote repository

 

git remote add marcus https://github.com/mmoyses/jboss-as.git 

 

 

Objective: Sync my branch with Marcus on a regular basis.

 

 git fetch marcus; git merge marcus/master --ff-only

 

Objective:  Bungled my master.  Need to recreate my master from jboss-as upstream master.

Solution #1:

 

git reset --hard upstream/master

Example:

 

anil@localhost:~/as7/jboss-as$ git reset --hard upstream/master
HEAD is now at 328151e changed jaas to security-domains

 

 

Solution #2:

 

git branch -D master
git fetch upstream
git checkout upstream/master 
git checkout -b master

Example:

 

 

anil@localhost:~/as7/jboss-as$ git branch -D master
Deleted branch master (was 4340a3b). 

anil@localhost:~/as7/jboss-as$ git fetch upstream
remote: Counting objects: 56, done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 44 (delta 8), reused 0 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://github.com/jbossas/jboss-as
   b3e90b9..328151e  master     -> upstream/master

anil@localhost:~/as7/jboss-as$ git checkout upstream/master 
Previous HEAD position was 1504538... sync
HEAD is now at 328151e... changed jaas to security-domains

anil@localhost:~/as7/jboss-as$ git checkout -b master
Switched to a new branch 'master'
anil@localhost:~/as7/jboss-as$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .metadata/
nothing added to commit but untracked files present (use "git add" to track)

 

Objective  Your origin (fork of upstream jboss-as) is totally screwed up

 

Go to github dashboard and delete the repository.

After that, fork the upstream and follow the http://community.jboss.org/wiki/HackingonAS7  guide.

Objective:  Cherry pick one of Marcus's commits

 

git cherry-pick b4e04f52046cad2687d60348bad3c8678ccd2963

 

b4e0   is the commit id

 

 

Objective:  you want to fork Marcus's branch and make some changes and send pull request

 

Assume Marcus has a branch called "jacc" that you want to work on and fix.

3 steps:

  • Remote add Marcus's repo.
  • Fetch Marcus's repo.
  • Checkout Marcus's branch into your own branch called "marcus"

 

 

$ git remote add mmoyses git://github.com/mmoyses/jboss-as.git


$ git fetch mmoyses
remote: Counting objects: 404, done.
remote: Compressing objects: 100% (69/69), done.
remote: Total 183 (delta 93), reused 158 (delta 71)
Receiving objects: 100% (183/183), 36.44 KiB, done.
Resolving deltas: 100% (93/93), completed with 53 local objects.
From git://github.com/mmoyses/jboss-as
 * [new branch]      ds         -> mmoyses/ds
 * [new branch]      infinispan_5_CR6 -> mmoyses/infinispan_5_CR6
 * [new branch]      jacc       -> mmoyses/jacc
 * [new branch]      master     -> mmoyses/master


$ git checkout -b marcus mmoyses/jacc 
Branch marcus set up to track remote branch jacc from mmoyses.
Switched to a new branch 'marcus'


$ git status
# On branch marcus
nothing to commit (working directory clean) 

 

General Chat that you may find useful

Topic:  Reset master, rebase etc

 

(03:34:03 PM) asaldhan: dmlloyd: if I reset my master,  I do not have to do a push?
(03:34:24 PM) dmlloyd: it depends on whether you want to also reset your remote to upstream/master
(03:34:37 PM) asaldhan: dmlloyd: yeah I want to reset basically.
(03:34:51 PM) dmlloyd: well if your remote was already reset to upstream then you don't need to
(03:34:59 PM) dmlloyd: usually a "git status" will tell you if you've diverted
(03:35:00 PM) asaldhan: dmlloyd: case when I have totally messed up my master.
(03:35:03 PM) dmlloyd: diverged*
(03:35:16 PM) dmlloyd: it's not like svn
(03:35:22 PM) dmlloyd: your local copy isn't a slave of the remote copy
(03:35:31 PM) dmlloyd: they're two isolated git repositories
(03:35:53 PM) dmlloyd: so if you haven't pushed anything to your origin/master in a while then it won't 
have changed without your knowledge
(03:35:57 PM) asaldhan: dmlloyd: right. but if I have checked in commits to my master and they are bogus.
(03:36:13 PM) dmlloyd: when you commit, it commits into the repository local to your machine
(03:36:22 PM) dmlloyd: your local checkout is a complete repository
(03:36:24 PM) asaldhan: dmlloyd: I meant pushed
(03:36:42 PM) asaldhan: dmlloyd: if I have pushed some changes to my master and they are screwed 
up in relation to upstream
(03:36:45 PM) dmlloyd: if you want to change your remote origin/master then yes pushing is what 
you want to do
(03:37:36 PM) asaldhan: dmlloyd: when I reset git reset --hard upstream/master
(03:37:41 PM) asaldhan: dmlloyd: what happened?
(03:37:49 PM) asaldhan: dmlloyd: local branch was replaced with upstream/master?
(03:37:57 PM) dmlloyd: you're changing your local master to point to the same commit as upstream/master
(03:38:19 PM) dmlloyd: where upstream/master is as of the last time you did "git fetch upstream"
(03:38:19 PM) asaldhan: dmlloyd: now I want my master to get synched with upstream/master.
(03:38:56 PM) dmlloyd: if you have local commits and you want to combine your local commits with 
upstream commits, use "git rebase upstream/master", which will put the new upstream commits 
chronologically before your local commits.
(03:39:09 PM) dmlloyd: well, sequentially before.  whatever.
(03:39:33 PM) asaldhan: Interactive rebase already started
(03:39:38 PM) asaldhan: dmlloyd: ^ whats that?
(03:39:46 PM) dmlloyd: that means you're in the middle of a rebase already.
(03:39:50 PM) dmlloyd: "git rebase --cancel"
(03:39:59 PM) dmlloyd: or maybe "--abort" I forget
(03:40:17 PM) dmlloyd: use "git log upstream/master..master" to see what you've got that 
upstream hasn't, and "git log master..upstream/master" to see what upstream's got that you haven't

 

CheatSheets/References