Git的审核备忘

1.参与一个开源项目,一定要从自己的帐号下克隆版本库,这样你才能推送修改!

2.Repository 版本库,又名仓库:
  可以简单地理解为一个目录,且目录下的所有文本文件可被Git 管理(建议用 UTF8 编码)。

3.用 gitconfig 命令的 --global 参数,表示你机器上所有的 Git 版本库都会使用这个配置:

  $ git config --globaluser.name  "你的名字"
  $ git config --globaluser.email "你的邮箱"
  
  可选设置:
  $ git config --globalcolor.ui auto  <--让Git显示颜色,会让命令输出看起来更醒目
  
  $ git config --globalalias.缩写后的命令别名 原命令名
  
  注:加上 --global是针对当前用户起作用的,不加那只针对当前的版本库起作用。
    每个 Git 版本库的配置信息都放在 .git下的 config 文件中。
    当前用户的 Git配置文件放在当前用户主目录下的一个 .gitconfig 隐藏文件中。

4.创建一个版本库:
  1) 在你喜欢的路径下新建一个空目录,如:$mkdir MyProject
  
    注:全路径中不要含中文,以免出问题!

  2)进入目录且初始化成版本库:
  
    $ cd MyProject
    $ git init
    
    注:在目录中创建了一个 .git 隐藏目录来管理版本库。
   
5.把提交新的或变更的文件到版本库中:
  1) 用 git add命令添加要提交的文件:
  
    $ git add 文件名
    
    注:把新添的或修改的文件添加到暂存区(stage)。
      在提交前,建议用 git status命令查看一下各文件的状态。

    2) 用 git commit 命令提交全部要提交的文件:
  
    $ git commit -m"提交说明信息"
  
    注:把暂存区的所有内容提交到当前分支。
      创建 Git 版本库时,Git 自动为我们创建了唯一一个 master分支。
      完成了一定的修改后,就应用 git commit提交一次,以便之后修改失误时回退。
  
6.用 gitstatus 命令查看版本库当前的状态:
  
  $ gitstatus
  
 .忽略特殊文件:
 某些文件必须放到版本库中,但又不能提交它们,如:调试日志文件。
  每次 git status 都会提示“Untracked files ...”
  
 在版本库的根目录下创建一个特殊的文件:.gitignore ,
 然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
  
  注:Windows 资源管理器中新建.gitignore 文件时,会提示输入文件名,
    所以用文本编辑器(如:Notepad++)来生成.gitignore 文件。
  
  格式参见有用的 .gitignore模板集:https://github.com/github/gitignore

  以 Android.gitignore举例:
  # Built applicationfiles
  *.apk
  *.ap_

  # Files for the DalvikVM
  *.dex

  # Java classfiles
  *.class

  # Generatedfiles
  bin/
  gen/

  # Gradlefiles
  .gradle/
  build/

  # Local configuration file(sdk path, etc)
 local.properties

  # Proguard foldergenerated by Eclipse
  proguard/

  # LogFiles
  *.log
  
  注:别忘了把 .gitignore也提交到版本库中啊!
    检验 .gitignore文件是否合格的方法就是执行 git status 命令。
  
7.用 gitdiff 命令查看最后修改的内容:

  $ gitdiff
  
  $ git diff HEAD -- 文件名 <-- 查看指定文件在工作区和版本库里面最新版本的区别

8.用 gitlog 命令查看历史记录:

  $ git log                <--提交信息完整显示
  
  $ git log --pretty=oneline <-- 每行一条提交记录,且仅显示[版本号]和[提交说明]
  
 注:由近及远的显示提交记录。
    输出信息中的 commit后面跟的散列值(SHA1)就是版本号。

9.用 gitreset 命令可以回退到指定版本:
  
  1) HEAD -当前分支上一次提交的版本
  
    $ git reset HEAD
    $ git reset HEAD 文件名  <--把暂存区的修改撤销掉(unstage),重新放回工作区
    
  2) HEAD^ -当前分支上上一次提交的版本
  
  3) HEAD^^ -当前分支倒退三次提交的版本
  
  4) HEAD~数字 - 当前分支倒退 n次提交的版本
  
  5) 指定当前分支版本号(有前七位就够了,Git有的输出信息也仅输出七位分支版号)
 
    $ git reset 当前分支版本号
    
A.用 gitreflog 命令查看操作记录:

  $ gitreflog
  
 注:输出信息中包含[版本号][操作类型][操作描述]。
 
B.用 gitlast 命令显示最后一次的提交内容:

  $ gitlast
 
C.用 gitcheckout 命令切换分支:

  $ git checkout -- 文件名 <-- 把指定文件在工作区的修改全部撤销
                        注:在资源/文件管理器中误删除指定文件后可恢复。
  
 注:-- 很重要,没有 --,就变成了切换到指定分支的命令。
  
  注意以下两种情况:
  1)文件自修改后还没有被放到暂存区,撤销修改就回到了和版本库里面最新版本一样的状态;
  2)文件修改后并且已经添加到暂存区,再作修改,撤销修改后就和暂存区的版本一样的状态;
  即让文件回到最后一次 git add 或 gitcommit 时的状态。
  
 $ gitcheckout -b <本地新分支名><远程主机名>/<远程分支名>

  注:用 git checkout -b命令在<远程主机名>/<远程分支名>的基础上,
   创建一个本地新分支并切换为当前分支。
  
  $ git checkout -b<本地新分支名>
  
  等同于
  
  $ git branch<本地新分支名>
  $ git checkout<本地新分支名>
  
 注:在本地当前分支的基础上,创建本地新分支并将其切换为本地当前分支。
    用 git branch命令查看所有分支,当前分支前面会标一个*号。
  
  $ git checkout<本地分支名>  <-- 切换到指定本地分支
  
D.用 gitrm 命令删除文件:

  $ git rm文件名
  
  注:执行 git commit命令后文件就从版本库中被删除了。
  
E.创建 SSHKey :

  $ ssh-keygen -t rsa -C电子邮箱名
  
  注:Windows 下打开 Git Bash。
    当前用户目录里找到 .ssh 目录,里面有id_rsa 和 id_rsa.pub 两个文件,
    id_rsa    - 私钥,不能泄露出去,
    id_rsa.pub -公钥,可以发给别人。

F.用 gitremote 命令列出所有远程主机:

  $ gitremote
  
  $ git remote -v <-- 可以查看远程主机的网址
  
  注:为了便于管理,Git要求每个远程主机都必须指定一个主机名。
    克隆版本库的时候,所使用的远程主机自动被 Git命名为 origin 。
    如果想用其它的主机名,需要用 git clone命令的 -o 选项指定。
    
    1) 用 git remote rename<原主机名> <新主机名> 命令更改远程主机名。
    2) 用 git remote rm<主机名> 命令于删除远程主机。
    3) 用 git remote show<主机名> 命令查看该主机的详细信息。

G.用 gitremote add 命令添加远程主机:

  $ git remote add 远程主机名远程主机地址
  
  GitHub:
  $ git remote add origingit@github.com:帐户名/版本库名.git
  
 bitbucket:
  $ git remote add origingit@bitbucket.org:帐户名/版本库名.git
  
  注:origin 是远程主机名,这是 Git默认的叫法,也可以改成别的。
  
H.用 gitpush 命令把本地库的所有内容推送到远程库上:

  $ git push <远程主机名><本地分支名>:<远程分支名>
  
  $ git push --all<远程主机名>  <--不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机
  
  $ git push <远程主机名>:<远程分支名>  <-等同-> $ git push<远程主机名> --delete <远程分支名>
  
 注:如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

  $ git push -u<远程主机名> <本地分支名>
  
  注:如果当前分支与多个主机存在追踪关系,则可以使用-u 选项指定一个默认主机,
   Git 不仅会把本地分支名内容推送到远程主机上新建同名分支,
   还会把本地分支和远程主机的同名分支关联起来,
    这样接下来就可以用 git push<远程主机名> 命令。
   如果当前分支只有一个追踪分支,那么主机名都可以省略,用 git push 命令。
  
  $ git push --force<远程主机名>
  
 注:如果远程主机的版本比本地版本更新,推送时Git会报错,
    要求先在本地做gitpull合并差异,然后再推送到远程主机。
  
    使用 --force选项,会导致远程主机上更新的版本被覆盖。
  
  $ git push <远程主机名>--tags
  
  注:使用 --tags选项推送标签。
   
I.用 gitclone 命令从远程主机克隆一个版本库:

  $ git clone <版本库的地址> <-- 在本地主机生成一个目录,与远程主机的版本库同名
  
  $ git clone <版本库的地址><本地目录名> <-- 在本地主机生成一个指定的目录名
  
  注:版本库的地址支持HTTP(S)、SSH、Git、本地文件协议等。
  
    使用 https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令!
    
    $ git clone[user@]域名:帐户名/版本库名.git  <-- SSH协议
  
    执行 git clone成功后,所有本地分支默认与远程主机的同名分支,建立追踪关系。
  
J.用 gitfetch 命令将远程主机的更新取回本地:

  $ git fetch <远程主机名> <-- 将指定远程主机的全部更新到本地
  
  $ git fetch <远程主机名><远程分支名>  <--将指定远程主机的指定分支更新到本地
     
K.用 gitmerge 或 git rebase 命令在本地分支上合并远程分支:

  $ git merge<远程主机名>/<远程分支名>
  $ git rebase<远程主机名>/<远程分支名>
  
 注:在当前分支上,合并<远程主机名>/<远程分支名>。
   
L.用 gitpull 命令取回远程主机上某个分支的更新,再与本地的指定分支合并:

  $ git pull <远程主机名><远程分支名>:<本地分支名>
  
  注:用 git branch--set-upstream <本地分支名> <远程主机名>/<远程分支名>命令,
   来手动建立追踪关系。

   当前分支与远程分支建立了追踪关系,就可以省略<本地分支名>:<远程分支名>,
   用 gitpull <远程主机名> 命令取回更新再合并。

   如果当前分支只有一个追踪分支,连远程主机名都可以省略,
   用 gitpull 命令取回更新再合并。

  $ git pull <远程主机名><远程分支名>
  
 注:上面这个命令表示,取回指定远程主机的指定分支,再与当前分支合并,
    等同于先执行 git fetch 命令,再做git merge 命令:
  
    $ git fetch<远程主机名>
    $ git merge<远程主机名>/<远程分支名>

M.用 gitmerge 命令合并指定分支到当前分支:

  $ git merge<本地指定分支名> 或 <远程主机名>/<远程分支名>
  
  注 Git用如下格式标记出冲突内容:
  
 <<<<<<< HEAD
 合并时有冲突的当前分支内容
  =======
 合并时有冲突的指定分支内容
 >>>>>>> 指定分支名
  
  $ git merge --no-ff -m"合并说明信息" <本地分支名>
  
  注:--no-ff 参数,表示禁用 Fastforward 模式。
    Git 使用 Fast forward模式后,删除分支后,会丢掉分支信息。
    要强制禁用 Fast forward模式,Git就会在合并时生成一个新的提交,
   这样删除分支后也可以从分支历史上看到分支信息。

N.用 gitbranch 命令管理分支:

  $ git branch -r <-- 命令查看远程分支
  $ git branch -a <-- 命令查看所有分支
  
  $ git branch<本地新分支名>  <--创建本地当前分支的新分支
  
  $ git branch -d<本地分支名>  <-- 删除本地指定的分支
  
  注:因为创建、合并和删除分支非常快,所以 Git鼓励你使用分支完成某个任务,
   这和直接在主分支上工作效果是一样的,但过程更安全。
  
    Git分支十分强大,在团队开发中应该充分应用。
  
  $ git branch -D<本地分支名>
  
  注:新分支还没有合并过,需要强行删除使用 -D参数。
  
  $ git log --graph <-- 可以看到分支合并图

O.用 gitstash 命令存放当前工作现场:

  $ gitstash
  
  $ git stash list <-- 查看存放的工作现场
  
  $ git stash pop <--恢复并删除存放的工作现场
  
  等同于
  
  $ git stash applystash@{数字} <-- 恢复存放的指定工作现场
  $ git stash dropstash@{数字} <-- 删除存放的工作现场
  
  注:如要仅有一个,则可省略 stash@{数字}参数。
  
P.用 gittag 命令查看标签:

  $ git tag <-- 查看标签
  
 注:标签不是按打标签的时间顺序列出,而是按标签名字母排序的。
  
  $ git tag <标签名> <-- 打标签
  
  $ git tag <标签名>[版本号] <-- 对指定版本号打标签
  
  $ git tag -a <标签名>-m "标签说明信息" [版本号]  <-- -a 参数指出标签名,-m参数指出说明信息
   
 注:首先切换到需要打标签的分支上,再打标签。
  
  $ git show <标签名> <-- 查看标签信息
  
  $ git tag -d <标签名> <-- 删除指定的标签
  
  $ git push <远程主机名><标签名>  <-- 推送指定标签到指定远程主机
  
  $ git push origin --tags <-- 一次性推送全部尚未推送到远程的本地标签
  
 注如果标签已经推送到远程,要删除远程标签,就要先从本地删除,然后从远程删除:
  $ git tag -d<标签名>
  $ git push origin:refs/tags/<标签名>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值