1、创建版本库
git init
git add readme.txt
git commit -m "wrote a readme file"
git status //查看状态
git diff readme.txt //查看不同
pwd(显示当前目录)
2、版本回退
git log //显示从最近到最远的提交日志
git log --pretty=oneline
git reset --hard HEAD^ //回退到上一个版本
git reset --hard c276a29 //回退到指定版本
HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reflog 记录你的每一次命令(每一次commit)
3、工作区和版本库
.git中: 暂存区(index)、第一个分支 master、指向master的指针HEAD
每次修改,如果不add到暂存区,那就不会加入到commit中
未commit时候 git diff HEAD -- readme.txt 查看修改了的内容,放在暂存区与版本库中内容的不同
4、撤销修改
git checkout -- file 可以丢弃工作区的修改
(1)file 未放入暂存区,撤销修改回到和版本库一样
(2)file 已经添加到暂存区,又修改了 ,撤销修改 回到添加到暂存区后的状态
git reset HEAD file 撤销暂存区的修改,重新放回工作区
5、删除文件
git rm test.txt
git commit -m "remove test.txt"
删除错误,从版本库恢复
git checkout -- test.txt
6、远程仓库
SSH新建
ssh-keygen -t rsa -C "youremail@example.com"
添加远程仓库
git remote add origin git@github.com:AmyMengz/assistent.git
git push -u origin master 上传到远程仓库
从远程仓库克隆
git clone git@github.com:AmyMengz/assistent.git
7、分支管理
创建分支:git branch dev
切换分支:git checkout dev
创建分支并切换:git checkout -b dev
查看当前分支:git branch
合并指定分支到当前分支:git merge dev
删除dev 分支:git branch -d dev
查看分支的合并情况:git log --graph --pretty=oneline --abbrev-commit
--no-ff方式的git merge:git merge --no-ff -m "merge with no-ff" dev
强行删除一个没有被合并过的分支:git branch -D feature-vulcan
查看远程库的信息:git remote
查看远程库的详细信息:git remote -v (显示了可以抓取和推送的origin的地址)
推送分支:git push origin master
抓取远程分支:git checkout -b dev origin/dev
定本地dev分支与远程origin/dev分支的链接:git branch --set-upstream dev origin/dev
1、首先,可以试图用git push origin branch-name推送自己的修改;
2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3、如果合并有冲突,则解决冲突,并在本地提交;
4、没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
一般使用方式:
1、本地建立分支,dev
git checkout -b dev 在dev分支进行修改
git status -> git add -> git commit -m "" 提交修改
2、切换到master分支
git checkout master
3、合并分支
git merge dev
4、添加到本地分支,上传到远程分支
git push origin master
git修改远程仓库地址
方法有三种:
1.修改命令
git remote set-url origin [url]
例如:git remote set-url origin gitlab@gitlab.chumob.com:php/hasoffer.git
2.先删后加
git remote rm origin
git remote add origin [url]
3.直接修改config文件
4、error: failed to push some refs to 'ssh://admin@192.168.1.68:29418/xxx.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
1. git init //初始化仓库
2. git add .(文件name) //添加文件到本地仓库
3. git commit -m "first commit" //添加文件描述信息
4. git remote add origin + 远程仓库地址 //链接远程仓库,创建主分支
5. git pull origin master // 把本地仓库的变化连接到远程仓库主分支
6. git push -u origin master //把本地仓库的文件推送到远程仓库
5、! [rejected] master -> master (non-fast-forward)
存在冲突,需要先解决冲突
6、git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
//需要设置远程仓库和远程分支名
git pull origin master
CONFLICT (add/add): Merge conflict in .gitignore
Automatic merge failed; fix conflicts and then commit the result. 自动合并失败
Administrator@mz-PC MINGW64 /f/Work/AS/AS2.3/MyApk2 (master|MERGING)
查看文件可以看到冲突信息
<<<<<<< HEAD
## XXA
开发板xx
=======
## MyApk
开发板my.apk
>>>>>>> d9a9c836ccb23df609019098552b8aed9c8217f7
手动解决冲突,
git add
git commit -m
git push
查看已经commit 但是还没有push 的代码
git log master ^origin/master
查看自己的用户名和邮箱地址:
$ git config user.name
$ git config user.email
修改自己的用户名和邮箱地址:
$ git config --global user.name "xxx"
$ git config --global user.email "xxx"