Git使用

Git命令使用

git checkout branch_name -- file_name     恢复deleted的文件,从指定的分支恢复

git reset fdaswrew --hard  恢复deleted的文件,先reset到某次提交,在git pull

git log --stat  查看提交的文件名等详细信息

git status 查看当前分支的状态

git diff 查看所有文件的修改情况

git blame file 查看文件每一行代码的责任人

git stash    将修改的文件保存在暂存区

git stash  show   显示暂存区的文件

git stash clear   清空暂存区

git log filename 查看文件的commit记录

git log -p filename 查看文件的修改记录

git show commit-no  filename 查看该次提交文件的修改

git reset --hard commit_id 回退到指定版本

git add -u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件

git add -A  提交所有变化

git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

git branch -m oldBranchName newBranchName 修改git分支名称

# 删除 untracked files:

        git clean -f

# 连 untracked 的目录也一起删掉:

        git clean -fd

# git更新子模块

        git submodule update --init --recursive

# 查看自己的用户名和邮箱地址:

   git config user.name

   git config user.email

# 修改自己的用户名和邮箱地址:

   git config --global user.name 'xxx'

   git config --global user.email 'xxx'

git rebase成功后撤销

1. 首先执行 git reflog 查看本地记录

a8268be HEAD@{21}: commit: xxxx

2. git reset  a8268be   ,在重新提交

使用cherry-pick

可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了。

例如:

        将dev_1分支的某次commit, 提交到dev_2分支

                1) git checkout dev_1, 执行git log 找到commit_id     

                2) git checkout dev_2 , 执行git cherry-pick commit_id                               

git cherry-pick  
20c2f506d789bb9f041050dc2c1e954fa3fb6910 
2633961a16b0dda7b767b9264662223a2874dfa9 
5d5929eafd1b03fd4e7b6aa15a6c571fbcb3ceb4  

        多个commit-id使用空格分割, commit-hash最好按提交时间先后排列, 即最先提交的commit放在前面。

注意:

1. 如果有冲突,git status 解决冲突,git add .

2. git cherry-pick --comtinue

有用options:

      --quit 退出当前的chery-pick序列

     --continue 继续当前的chery-pick序列

     --abort 取消当前的chery-pick序列,恢复当前分支

     -n, --no-commit 不自动提交

     -e, --edit 编辑提交信息

rebase使用

1. 将待合并的分支都更新到最新

     git checkout master

     git pull 

     git checkout feature

     git pull

2. 在feature分支上进行rebase,执行下面命令

     git rebase master

它会把整个 feature 分支移动到 master 分支的后面,有效地把所有 master 分支上新的提交并入过来

但是,rebase 为原分支上每一个提交创建一个新的提交,重写了项目历史,并且不会带来合并提交。

3. 如果有冲突,执行

    git status

查看冲突文件,并进行修改,在执行

     git add -u 

将冲突文件添加,然后继续rebase,执行

     git rebase --continue

如果有冲突,重复步骤3,直到rebase完成

4.把feature分支推送到远程分支,强制推送,否则会chang s

   git push -f

rebase 工作流程:

git rebase 
while(存在冲突) {
    git status
    找到当前冲突文件,编辑解决冲突
    git add -u
    git rebase --continue
    if( git rebase --abort )
        break; 
}

修改commitID注释

注意:只能在自己开发分支上进行,修改最新的commitID注释

1.git commit --amend

     修改注释,保存退出

2.git push -f

修改提交人和邮箱

如果只需要最近一次提交,那么很简单直接使用git commit –amend就可以搞定

git commit --amend --author="NewAuthor <NewEmail@address.com>"
 

删除某次commit

git rebase -i A

这个命令以A为新的基准(base),将A之后的commit列出来让用户选择如何处理。在出现的编辑界面上,把B前面的pick改成d或者drop,或者把一整行删除掉,保存退出就可以了。

rebase 到要删除的commit的前一次提交,

1.git rebase -i HEAD~n

2.删除commit id的那行

3.:wq保存。

4.git push -f

修改本地分支的名称

如果对于分支不是当前分支

git branch -m 原分支名 新分支名

如果是当前,那么可以使用加上新名字

git branch -m 新分支名称

合并多次commit并提交

1. git log 查看提交记录

         commit 3ca6ec340edc66df13423f36f52919dfa3......
         commit 1b4056686d1b494a5c86757f9eaed844......
 
        commit 53f244ac8730d33b353bee3b24210b07......
 
       commit 3a4226b4a0b6fa68783b07f1cee7b688.......

2.   git rebase -i HEAD~3 或执行  git rebase -i 3a4226  填的是第4个commit的版本号,即合并这个commit之后的所有commit (不包括这个)

执行了rebase命令之后,会弹出一个窗口

      pick 3ca6ec3   '注释**********'
 
      pick 1b40566   '注释*********'
 
     pick 53f244a   '注释**********'

3. 除了第一个的pick,其他都改为 s 或 squash

       pick 3ca6ec3   '注释**********'
 
        s 1b40566   '注释*********'
 
       s 53f244a   '注释**********'

修改后:wq 保存退出,这时 git log 一下,发现提交已经合并

到这里以后,  git status  后会看到,提示让你git pull一下,千万不要这样做!否则你会发现这三条白合并了,还平白多了两条commit。

修改commit 信息:

        git commit --amend

4. git push -f 强制push到远程

这时候,需要强制push上去  git push -f , 当然要确保强制push不会覆盖了别人的代码,如果这个分支只有你维护那就无所谓了

创建分支并推送到远程

  1. 新建一个本地分支

git checkout –b zhaoyh_dev

  1. 查看分支的状态

Git branch

  1. 推送到远程分支

git push origin local_branch:remote_branch

git push origin zhaoyh_dev:zhaoyh_dev

  1. 建立本地到上游(远端)仓的链接 --这样代码才能提交上去

git branch --set-upstream-to=origin/dev

git branch --set-upstream-to=origin/zhaoyh_dev 

  1. 取消对master的跟踪

git branch --unset-upstream master

  1. 回退代码

先本地回退: git reset commit_id –-hard

在推送到远程:git push -f origin zhaoyh_dev

删除分支

#删除本地的某个分支

git branch -D zhaoyh_dev

#删除远程的分支

git branch -r -d origin/zhaoyh_dev

#注意这个只是删除本地的索引,而不是真正删除远程分支的内容,要想真正删除远程分支上的内容,可以这样:

git push origin :zhaoyh_dev

注意,冒号前面的空格不能少,相当于把一个空分支push到server上,等于删除该分支。

git push origin --delete origin/zhaoyh_dev

#清理远程的分支

 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息

执行 git remote prune origin 删除没用的引用 

合并分支

  1. 进入要合并的分支(如开发分支合并到master,则进入master目录)

git checkout master

git pull

2、查看所有分支是否都pull下来了

git branch -a

  1. 使用merge合并开发分支

git merge 分支名

  1. 查看合并之后的状态

git status

5、有冲突的话,通过IDE解决冲突;

6、解决冲突之后,将冲突文件提交暂存区

git add 冲突文件

  1. 提交merge之后的结果

git commit

如果不是使用git commit -m "备注" ,那么git会自动将合并的结果作为备注,提交本地仓库;

  1. 本地仓库代码提交远程仓库

git push

linux环境从github上拉去代码

  1. 在/etc/hosts文件中配置github的地址,github地址的获取方法,执行git clone git@nidegithub.com,会报错,在报错地址中找到IP。在/etc/hosts文件中增加 ip  github.com
  2. 配置公钥

在linux环境中执行ssh-keygen -t rsa -C "yoxxxxxx@126.com"产生密钥在.ssh目录下

  1. 在github上自己的用户中,找到setting选项,选择add sshkey选项,把id_rsa.pub中的内容拷贝上去,保存。大功告成。

解决每次拉取代码都需要用户名密码

  1. 执行git config --global credential.helper store,在~/.gitconfig目录下会多出一个文件,这里会记录你的密码和帐号;
  2. 再执行git pull 输入一次正确的帐号密码之后就不用再输入了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值