周波斯

导航

git 一些常用的操作命令

git merge 合并两个分支的某个文件   

例如:要合并本地分支A的test.txt文件到本地分支B,如下:

git checkout B  (注释:先切换到本地分支B)
git checkout -p A test.txt   (注释:将本地分支A的text.txt文件合并到本地分支B)

将本地分支A的某个文件夹合并到本地分支B:

// 首先切换到分支B
git checkout B

// 合并分支A的文件夹model到分支B
git checkout A -- model/ 

 

如果是要将远程分支的某个文件合并到本地分支B,需要在分支前面加上origin,如下:

git checkout B   (注释:先切换到本地分支B)
git checkout -p origin/master test.txt (注释:将远程分支master下的test.txt合并到本地分支B)

 

把新增的远程分支同步到本地

      例如:在公司新增了一个远程分支release-2022,家里电脑没这个本地分支,需要把这个远程分支同步下来:

git checkout -b release-2022 origin/release-2022

 

查看本地分支跟远程分支的关联情况

git branch -vv

 

 

 创建新分支并推送到远程

       例如:发布新版本,需要创建一个新的release版本分支,并推送到远程服务器上,如下:

方法一:

git branch release-20210714   (注释:创建分支release-20210714)
git checkout release-20210714    (注释:切换到新创建的分支release-20210714)
git push origin release-20210714  (注释:推送到远程服务器的release-20210714分支,远程服务器上不存在该分支则会自动创建)

方法二:

git checkout -b release-20210714  (注释:切换到分支:release-20210714,如分支不存在则创建分支)
git push origin release-20210714   (注释:推送到远程服务器的release-20210714分支,如分支不存在则自动创建)

 

删除本地分支

(注:删除本地分支之前需要切换到其他分支)
git checkout other
-branch-name //切换到其他分支 git branch -d branch-name //删除本地分支 git branch -D branch-name //强制删除本地分支

 

删除远程分支

git push origin --delete branch-name  //删除远程分支

 

 

添加/删除文件

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件 # 添加当前目录的所有文件到暂存区 $ git add .

  $ git add -A  #提交所有变化

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

# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p

# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

 

配置账号和邮箱

配置全局仓库的账号和密码
    git config --global user.name "userName"  //用户名
    git config --global user.email "email@xx.com" //邮箱

进入到这个仓库目录,使用下面命令可以单独为该仓库配置用户名和邮箱
    git config user.name "userName"  //用户名
    git config user.email "email@xx.com" //邮箱

设置好账号和密码后
    git config --list   //查看配置

 

合并分支A的某个提交到分支B

  先切换到 A 分支
$ git checkout A
  查看日志 找到需要合并的提交 commit ID 
$ git log

  例如
4387200ab209776049b0bd0188076ea1d66b5e9f

  然后切换到 B 分支上
$ git checkout B

  合并命令( git cherry-pick )跟上其他分支的提交id
$ git cherry-pick  4387200ab209776049b0bd0188076ea1d66b5e9f

 

把当前未提交的修改转移到正确的分支下 

//将当前修改添加到暂存区
git add .
//把暂存区内的修改存储起来 git stash //切换到正确的分支 git checkout dev-xx //将存储的修改取出来 git stash pop

 

查找未解决的冲突

//显示合并的所有冲突,缺点是该信息不会随着修复冲突动态变更
git merge --continue

//显示当前仍有冲突的文件
git diff --check

 

回滚到某次commit,该commit后面所有commit记录丢掉

git reset --hard commit-id  
git push --force

 

仅撤回某次commit,该commit后面所有commit不受影响,保留

git revert commit-id

 

回滚到某次commit,该commit后面所有commit记录保留

原理:利用git diff和git apply实现,思路:

               1. 得到当前最新提交到回退提交之间的代码diff,将diff保存为文件

                2. 利用git apply 将diff作用到代码上,回到之前的代码状态 3. 提交代码

git checkout pre-commit
git diff cur-branch > ~/diff.patch
git checkout cur-branch
cat ~/diff.patch | git apply
git commit -am "roll back to pre-commit"
git push

 

posted on 2021-06-18 12:06  周波斯  阅读(152)  评论(0编辑  收藏  举报