唔,git有本地版本管理功能,所以,这个完全是可以拿来自己做版本管理的。所以有必要学习一下,另外,在oschina上开了个账户,用来管理自己一些代码,也是增加自己学习git的动力。
1. 使用clone下载整个仓库。在当前文件夹建立了一个新的目录,并将所有文件下载过来,存入新目录。
git clone your.address.git
2. 使用git最常用的工作流程。包括从远端仓库下载文件到本地,修改,然后提交。
1)从远程仓库更新代码下来。这需要你自己手动新建一个目录,并且在目录下面执行git init。该指令会把远程仓的代码下载到当前目录下来。
git pull your.address.git
由于pull会自动merge代码,所以,也可以选择相对安全一点的fetch来下载远端的代码。
git fetch your.address.git
2)修改完代码,将修改的信息添加到索引。这是我们在commit前必须要进行的一步,“-A”目的是将所有的修改都添加到索引中。
git add -A(git add -i,交互式添加)
或者是删除,把已经add的修改信息从索引中删除
git rm file.name
3)按照索引,向本地的仓库提交修改。注意,只是提交修改到本地仓库,并没有发送到远端仓库。-m是提交时的备注消息,这里的提交消息为“test”。
git commit -m "test"
由于commit是将修改信息提交到当前branch,所以,如果你不确定是当前在哪个branch的话,可以用如下一句查看:
git branch
4)由于如果没有执行过add,修改就不会被提交,所以,强烈建议在commit之前,使用status来查看文件状况。
git status
5)将本地当前branch的全部文件push到远端仓库,如有冲突,强行覆盖。这里的origin时指pull时的远程仓库,即上面的your.address.git。master是指提交到远程仓库的哪个branch。
git push origin master
3. branch的相关操作
1)branch就是不同的版本,我们或者可以用trunk来表示,相当于一个子仓库。我们可以为基本款,豪华款或者精英款之类的各建一个仓库。查看当前有哪些“子仓库”:
git branch
2)创建一个新的branch,并把这个branch设置为当前branch:
git checkout -b new_branch_name
还有下面这条也是
git branch new_branch_name
上面创建的新分支默认是空的,或者是把创建前的no branch状态挂载上来。我们也可以用已有的branch来初始化新的branch:
git checkout –b new_branch_name local_old_branch_name
3)或者,我们可以切换到已经有的branch上:
git checkout local_branch_name
4)删除branch
git branch –D local_branch_name
4. 还原刚刚提交的某个文件
git checkout app/model/user.rb
5. 查看提交的历史记录
git log
6. rebase,reverse,revert
留白。
7. merge
留白。
8. diff
留白。
9. git show
查看所有branch,git show-branch --all
10. git config
设置开发者名称,git config --global user.name "biiigfish"
设置开发者名称(全局),sudo git config --system user.name biiigfish
设置开发者邮箱,git config --global user.email "piedgogo@gmail.com"
设置git输出是彩色的,git config color.ui true
自动diff的颜色,git config --global color.diff auto
status要显示颜色,git config --global color.status auto
git config --global color.branch auto
git config --global color.log auto #git log --grap 据说很漂亮
11. 代码提交的管理
每次push或者pull都要手动的指定url,真是要烦透了。。。所以,能记住提交url才是硬道理。其中的关键,就在“ .git/config”中。先说指令:
# 其实主要就是git remote,实在不懂,可以看help信息git help remote.
git remote add name url #添加一个名叫name的url,push的时候可以直接使用push name
git remote set-url --add name url #给name再添加一个url。现在,push的时候就可以同时push到两个url了。
上面添加的url,或者是remote也都是可以修改或者删除的。具体看help。