git的学习

原文来自:

http://blog.csdn.net/crylearner/article/details/7685022

仓库创建

1.   本地新建一个git仓库

git --bare init

如果是需要作为服务器仓库的,推荐加—bare,否则以后其他仓库push代码到此仓库时会有一些麻烦。

具体可以参考:http://hi.baidu.com/mengdaant/item/62dc182908bf25f950fd87ff

 

添加文件

git add . // add all

git add \\*.txt  // add all txt file

 

添加文件后,直接git commit就完成了仓库创建。

 

2.   本地克隆一个远程仓库

2.1 克隆远程仓库

git clone  <name> <url> <directory>

这里,name可以不写,默认origin

directory也可以不写,默认使用远程git一样的根目录名。

 

2.2  添加远程仓库

git remoteadd  <name>  <url>

name可以任意取。 url必须是确实存在的git仓库。

 

3.   同步远程仓库代码到本地

git pull <name>

如果pull时提示“You asked me to pull without telling me whichbranch you want to merge with”
说明本地有新建分支且已同步到服务器上,当从服务器下载代码时需要在本地config中配置该分支的merge信息。
配置时可以参考下面的例子:

 $ git config branch.master.remote origin   //master是分支名,origin是远程仓库名

 $ git config branch.master.merge refs/heads/master

具体可参考http://hubingforever.blog.163.com/blog/static/171040579201232184549211/

 

4.   同步本地代码到远程仓库

git push <remote name> <branchname>

如果push时提示“ refusing to update checked out branch:refs/heads/master”,说明远程仓库创建是没有使用—bare选项。

解决这个冲突需要远程仓库管理员:
具体可以是将远程仓库当前分支切换到其他分支(如谁也不会使用的分支),
或者按照提示内容,设置denyCurrentBranch = ignore
具体可参考http://hi.baidu.com/mengdaant/item/62dc182908bf25f950fd87ff

代码提交

代码提交一般有五个步骤:

1.查看目前代码的修改状态

2.查看代码修改内容

3.暂存需要提交的文件

4.提交已暂存的文件

5.同步到服务器

1.     查看目前代码的修改状态

提交代码之前,首先应该检查目前所做的修改,运行git status命令

a)        已暂存 (changes to be committed

new file //表示新建文件

modified //表示修改文件

deleted //表示删除文件

b)       已修改 (changed but not updated

modified //表示修改文件

deleted //表示删除文件

另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout --

c)        未跟踪 (untracked files

       

      

2.     查看代码修改的内容

 git diff  <file>

比较某文件与最近提交节点的差异。

注意:如果该文件已暂存,那么应该使用git diff –cached<file>
 

 git diff <hashcode> <hashcode>  <file>

比较某文件在提交节点a,节点b的差异。

技巧:如果省略后面一个hashcode,则默认表示与上一提交节点比较。(也可以利用^运算符)

 

3.     暂存需要提交的文件

如果是新建的文件

git add  <file>


如果是修改的文件
git add  <file>

如果是删除的文件
则 git rm  <file>

 

4.     提交已暂存的文件

git commit

注意注释填写规范。

git commit --amend

修改最近一次提交。有时候如果提交注释书写有误或者漏提文件,可以使用此命令。

 

5.     同步到服务器

同步到服务器前先需要将服务器代码同步到本地

命令: git pull

如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。

命令:git checkout -- <有冲突的文件路径>

同步到服务器

命令: git push origin  <本地分支名>

如果执行失败,一般是没有将服务器代码同步到本地导致的,先执行上面的git pull命令

提交记录查询

git log  --author=””

查询某人的提交记录

git log <file>

查询某文件的提交记录

 

一般可以借助可视化工具,如gitktortoiseGit


git whatchanged  查看具体哪些文件有改动

 

 

应该要注意的是不论git log 或 git whatchanged, 显示出来的节点顺序,不是绝对按时间顺序排列的,这点在遇到分支合并节点的时候一定要小心。

建议log的查看使用可视化工具。

1.        回退已提交的代码

git reset --hard HEAD
回退整套代码到最近一次提后的状态。
参数 --hard 表示删除自该次提交后所有的修改记录(未跟踪文件除外)。如果需要保留目前的修改,则执行git reset -- soft HEAD


git reset --hard <hashcode>
回退代码到指定的某次提交状态。(hashcode是该次提交的哈希码)。同样,参数hard同上。

git没有办法回退单个文件到某次提交状态。如果确实需要这么做,那么应该先取得某次提交时该文件的内容,然后覆盖现有的这个文件。

2.        撤消已暂存的文件

git reset HEAD <文件路径>

3.        撤消已修改的文件

git checkout -- <文件路径>

4.        撤消未跟踪文件

rm <文件或文件夹路径>

如果加上参数-rf,那么表示删除文件夹内所有子文件。

git clean -dxf

清除所有未跟踪文件,包括纳入ignored的文件。

如果要保留ignored的文件修改,使用参数-df

应用标签

1.      查看标签

git tag –l<name> , <name>支持通配符

2.      新建标签

git tag –a<name>  -m <detail message>

如果是需要给某个历史提交节点打标签,则加上对应hashcode即可

3.      删除标签

git tag –d<name>

4.      提交标签

git push origin<分支名><tag name>

5.      恢复代码到某个标签点

git show<tagname>   由此得到对应的提交哈希值,然后git reset 回退代码

基本配置

1. Git着色

git config color.ui  true

 

2. 设置文本编译器
git config core.editor  XXX
如果是需要配置为notepad

core.editor='D:/Progra~1/Notepad++/notepad++.exe'-multiInst -notabbar -nosession –noPlugin

 

3. 设置比较工具和合并工具

git config diff.tool XXX
git config merge.tool XXX
 
使用时,如果直接 gitdiff命令无效,可以尝试gitdifftool 和 gitmergetool
使用beyondcompare做默认比较和合并工具,

可以参考官网说明http://www.scootersoftware.com/support.php?zz=kb_vcs

分支管理

1.     克隆代码

git clone <代码仓库路径>

2.     创建本地工作分支

git checkout -b <newbranch>

创建并切换到新分支。

如果是从远程分支创建一个本地同名分支,则git checkout -b <branchname> <origin/branchname>

 

git branch <newbranch>

创建新分支,但不切换过去

3.     删除分支

git branch -D <branch>

强制删除分支,即使该分支上有未提交的内容。(没有-D参数时,只有当该分支没有未提交内容时才可以删除)

4.     切换分支

git checkout <otherbranch>

Note: 分支记录的是committed的内容,所以所有未提交的修改不同分支中都是共享的,也就是都能看到。

git stash

将分支上所有修改内容暂时保存起来。有时候工作进行到一半,需要切换到另一个分支,但是这时候又不适合提交,可以使用git stash暂时保存修改的内容,回头在利用git stash apply恢复原先的工作内容。

5.     合并分支

 git merge --no-commit

git commit

这样做而不直接merge的目的是迎合代码提交规范的需要,使可以填写分支合并信息。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值