1. git的基本命令
git init 初始化git生成git仓库
git status 查看git 状态
git add <filename> 添加文件到暂存区
git add . 将所有的文件添加到暂存区
git commite -m 'message' 提交文件到本地仓库
git reset <filename> 将尚没有commit之前加入到暂存区的文件重新拉回
git log 查看日志
git branch //查看本地所有的分支
git branch -r//查看远程所有分支
git branch -a//查看本地和远程的所有分支
git branch <branchName>//新建分支
git branch -d <branchName>//删除本地分支
git branch -d -r <branchName>//删除远程分支,删除后还需推送到远程服务器
git push origin:<branchName>//删除后推送到远程服务器
git branch -m <oldbranch> <newbranch>//重命名本地分支
取消分支的合并:git merge --abort
只合并某个分支上的某一次提交: git cherry-pick commitid
让远支持提交长文件名: git config --global core.longpaths true
查看当前登录用户名:
git config user.name
查看当前登录邮箱:
git config user.email
修改用户名和邮箱:
git config --global user.name “xxx”
git config --global user.email “xxx”
git branch -a 查看分支
git fetch origin 拉取远程分支
git checkout -b <分支名> 切换分支
git branch -d<分支名> 删除分支
创建本地分支,并切换至本地分支,同时将本地分支和远程分支相关联:
git checkout -b 本地分支名 origin/远程分支名
在git init 初始化仓库后,添加远程仓库:
git remote add origin 远程仓库地址
初始化仓库之后进行关联:
git branch --set-upstream-to=origin/远程分支名 本地分支名
2. git fetch 和 git pull的区别
git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
3.git 中一些选项的解释
- -d :--delete 删除
- -D :--delete --force的快捷键
- -f :--force 强制
- -m :--move 移动或重命名
- -M :--move --force 的快捷键
- -r :--remote 远程
- -a :--all 所有
4.查看提交历史
git log
git log --online
git log --online --graph --decorate
选定的查看两次提交的不同:
git diff <CommitID1> <CommitID2>
5.git文件状态的解释说明
- 没有被add的文件叫untracked
- add之后的文件处于staged状态等待commit
- commit之后的文件处于unmodified这里之所以是modified是因为文件会跟仓库中的文件对比
- 当ummodified的文件被修改则会变为modified状态
- modified之后的文件add之后将继续变为staged状态
- unmodified的文件还有一种可能是已经不再需要了,那么可以remove它不再追踪变为untracked
从git中更新代码就是重新拉一遍代码:git pull
6.git提交部分代码
- 定位到要提交代码的路径下
- git status -s 查看仓库的状态
- git add 文件名(一定要在当前项目路径下)
- git stash -u -k 忽略其他文件,把现修改的文件隐藏起来,这样提交的时候就不会提交
- git commit -m "添加备注"
- git pull 拉取合并代码
- git push 推送到远程仓库
- git stash pop 恢复之前忽略的文件(非常重要的一步)
- 未被add的文件
7.报错记录
- 报错:failed to push some refs to 远程仓库地址
- 解决办法:git pull --rebase origin 当前远程仓库的地址,然后用git push 提交代码
- git clone 时报错:unable accsse to "url"地址,SSl certificate problem:self signed.....
- 解决办法:找到git文件夹中的bin文件,打开cmd窗口,输入:
- git config --global http.sslVerrify false 之后即可克隆下载项目
- 报错:fatal: refusing to merge unrelated histories(常出现在新建了一个仓库之后,把本地仓库进行关联提交、拉取的时候)
- 解决办法:在需要进行的操作命令后面加 --allow-unrelated-histories。例如
git merge master --allow-unrelated-histories git pull origin master --allow-unrelated-histories git pull --allow-unrelated-histories
8.合并分支与取消合并
在A的分支拉B分支的代码:
1.在A的分支执行git pull origin B分支名或者执行get merge进行合并
2.取消分支的合并:git merge --abort
9.回退版本
1.已 commit,未push到远程仓库。
git reset --soft(撤销commit)
git reset --mixed(撤销 commit 和 add 两个动作)
2.已 commit,并且push到了远程仓库。
git reset --hard(撤销并舍弃版本号之后的提交记录)(然后要用git push -f进行提交,覆盖所有之前的提交)
git revert(撤销,但是保留了提交记录)(这个不会覆盖之前所有的提交)
3. 已经执行了git reset --hard 回滚之后,怎么撤销这一步回滚操作(用git reset --hard 回滚git reset --hard,也许这就是解铃还须系铃人)
- 首先执行git log -g 或者 git reflog show来查看commit记录
- 找到执行reset --hard之前的commit对应的commitid,这一步我们可以通过日期和时间来辨别
- 最后直接使用命令git reset --hard commitid可强制回滚到之前的版本
- 附录:我们也可以通过使用git cherry-pick commitid来回滚某一个提交,因为有个时候我们使用git reset --hard之后可能只想回滚某一次提交,这个时候git cherry-pick 就可以派上用场