1、先到本地的master分支上拉最新的代码。 2、合了以后再建新的分支,然后再开发;
1、到目标文件夹****** 下:利用git init 就可以将该目录变成git可以管理的仓库,且默认分支为master. 这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,别动它!!!
$ git init Initialized empty Git repository in ****** /.git/ (base) # ****** on git:master x [13:53:38]常用命令
git add ** # 添加指定文件到暂存区; git add -A # 添加工作区内所有文件; git commit -m ''message***{此处为提交的注释}", # 将暂存区所有内容文件添加到当天分支; git status # 查看状态 git diff [**] # 查看文件的修改内容当前情况可以在建分支的时候看到命令的~
# 本地文件commit后,执行以下操作: git remote add origin https://github.com/tugenhua0707/testgit.git git push -u origin master # 由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令 # 以后推送代码就如下: git push origin master:master {本地分支:远端分支} # (远端分支没有的话,会自动创建一个分支)为了避免错误,在自己的模块可以创建分支,后期再进行合并
git checkout -B 新分支名 # 创建分支;会直接切换到新的分支 git branch # 查看当前分支,会列出所有的分支,当前分支前面会添加一个星号 git checkout name # 切换到指定分支 git merge name # 合并某分支到当前分支 git branch –d name # 删除分支 # 多个分支: 1、在当前dev分支修改内容commit后; 2、切回到主分支; git checkout master 3、合并分支: git merge –no-ff -m “注释” dev 4、随后就可以删除dev分支了: git branch -d dev 5、查看历史分支提交情况: git log --graph --pretty=oneline --abbrev-commit # 多个分支,未提交前,可以将修改暂存后,重新开发新的分支后再回来开发, # 拉远端代码的时候也可利用缓存将代码更新到最新版本, 背景:当前正在dev分支开发,但是没开发完;临时有新的需求要先做, 1、在dev分支下,缓存修改内容: git stash 2、在要修改分支下(这里假设是 feat分支),创建一个新分支: git checkout -B issue-404; 3、在issue-404分支下进行修改,然后add,commit, 4、回到主分支feat下,合并新分支,然后删除新分支 git checkout feat; git merge –no-ff -m “注释” issue-404 git branch -d issue-404 5、回到dev分支,接着开发 git checkout dev git stash list # 查看缓存文件 git stash pop stash@{0}--【缓存文件看到的编号】当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
1、要查看远程库的信息 使用 git remote 2、要查看远程库的详细信息 使用 git remote –v1、到指定文件下,添加.gitignore文件:
$ touch .gitignore2、在生成的.gitignore添加要忽略的文件,可以用* 作为通配符 我的.gitignore
resp_text .vscode .ipynb_checkpoints .idea __pycache__ *.ipynb因为我之前提交了,这里我只用了第二种的revert,然后强推上去是可行的,也不知道这样合适不?
撤销commit分为两种,一种是你已经push了,一种是还没有push 1.第一种情况:还没有push,只是在本地commit
git reset --soft|--mixed|--hard <commit_id> git push develop develop --force (本地分支和远程分支都是 develop)这里的<commit_id>就是每次commit的SHA-1,可以在log里查看到
–mixed 会保留源码,只是将git commit和index 信息回退到了某个版本.
–soft 保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
–hard 源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
当然有人在push代码以后,也使用 reset --hard <commit…> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现全是冲突…这时换下一种
2.commit push 代码已经更新到远程仓库
对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令
git revert <commit_id>revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新。 注意:git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit,看似达到的效果是一样的,其实完全不同。 第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会. 第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里. 第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.
这里主要是在一个分支上多个commit后,但是提交的时候要分在不同的分支,为了保证在pull requsts上不显示其他的commit,需要将commit进行分开,就可以使用git cherry-pick进行移动。(ps。理想的情况还是在开始就在不同的分支上开发,刚开始就不太知道,导致提交的有问题…),背景:在own分支上提交了多个commit,然后需要将某个commit改到dev分支。操作步骤: 首先切换到own分支下,查看log,找到指定commit的commitID
git checkout own git log ..... // 得到commitID然后切换到目标分支dev,采用cherry-pick移动指定commit.,再用git log就可以看到提交历史中有了目标commit了,然后再push到远端就行了。
git checkout dev git cherry-pick commitID删除本地分支
git branch 查看本地分支列表git branch -d 分支名删除远端分支
git branch -a 查看分支, git push origin --delete 远程分支名称最近有同事离职,然后在测试机上他之前拉代码的权限就没有了,当我们重新拉代码时就会报错,这里需要解除本地和远端的关联,重新连接,这里借鉴了别人写的文章:[git修改远程仓库关联:https://www.cnblogs.com/sugar-tomato/p/9029205.html]
# 方法一 通过命令直接修改远程地址 进入git_test根目录 git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 git remote set-url origin 仓库地址 # 方法二 通过命令先删除再添加远程仓库 进入git_test根目录 git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 git remote rm origin git remote add origin 仓库地址之前拉别人的新分支都是蠢蠢的用git pull 拉下来到指定分支,后来发现可以直接用下面这个命令,然后切换到新分支就好了
git fetch origin dev参考文章: git 删除本地所有未提交的更改
# 撤销提交过未add的文件的修改 git checkout -- <FILE> :有修改的文件回到 tracked 状态,对已 tracked 的文件撤销修改。 # 撤销所有 untracked 文件 git clean -n:演习 git clean -f:删除当前目录下 untracked 文件,除过 .gitignore 里的文件或文件夹 git clean -f <path>:指定路径下 git clean -df:删除当前目录下 untracked 文件和文件夹 git clean -xf:删除当前目录下所有 untracked 文件,不管 .gitignore参考文章:git 几个commit点合并成一个commit点
git log 获取需要合并的前一个commitId; git rebase -i commitId; 进入编辑模式,将里面需要合并的 由pick 改为squash 保存退出后进行下一个编辑页面,修改需要提交的commit内容,保存退出即可参考原文 git 取消commit git 删除本地和远端分支