Git学习网站:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
更新代码:git pull
上传代码:git push
上传分支:git push origin master
1.自报家门 git config --global user.name "mikepxq" git config --global user.email "1024694765@qq.com" 2.建库 mkdir ..创建文件 cd .. 进入 pwd//显示当前目录 git init .git ls -ah 查看所有列表 3.git add 3.1.git add . 不包括被删除的文件,其他所有添加到暂存区 3.2.git add -u 只处理被add的文件,不会提交新文件。 3.2.git add -A 上面的集合。 4.git commit -m "sqdao3-wrap init" 提交到本地仓库 4.1. git commit --amend 撤销上一次提交 并讲暂存区文件重新提交 5.git status 查看项目当前状况 6.git diff 查看修改 的内容 (difference) 7.git log 查看所有版本 git log --pretty=oneline 简介版 8.git reset HEAD -- <file> 拉取最近一次提交到版本库的文件到暂存区 该操作不影响工作区 HEAD 表示当前指针 HEAD^上一个 HEAD^^上2个 HEAD~100 上一百个 git reset --hard //重置暂存区与工作区,与上一次commit保持一致 1.之前删除的或者说 移动的文件 回复了 但是复制目录的地方 文件没有卸载, 也就是之前的回复了,现在的没删除。 git reset --hard 3628164 也可以用 commit id 3628164... 9.git reflog 用来记录你的每一次命令: 10 stage 暂存区 git add命令实际上就是把要提交的所有修改放到暂存区(Stage), 然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。 11.git checkout -- <file> 拉取暂存区文件 并将其替换成工作区文件 12. cat readme.txt 查看文件内容 Changes not staged for commit: 13.rm <file> 删除文件 1.删除后 git checkout <file> 取消操作(保存删除这个动作) 2.就是说 如果删除后 有修改其他内容 然后 为了找回删除的文件 这些(最后一次提交后)修改也会没了 14 创建SSH key 密匙 ssh-keygen -t rsa -C ".....@qq.com" 15.推送本地仓库 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013752340242354807e192f02a44359908df8a5643103a000 1.git remote add origin git@github.com:mikepxq/aipxq-blog-dev.git git remote add origin git@github.com:mikepxq/templateBasis.git git@github.com:mikepxq/aipxq-blog.git git@github.com:mikepxq/liuhe.git remote(遥远的) 远程库的名字就是origin(起源的) 1.git push -u origin master 2.git push origin master 第二次不用 -u 3.git push origin master -f 强推 第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支, 还会把本地的master分支和远程的master分支关联起来 这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时, 需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。 16.克隆 git clone git@github.com:mikepxq/test.git git clone git@github.com:mikepxq/templateBasis.git 17创建分支 git checkout -b dev 创建和切换 = git branch dev git checkout dev 18.查看当前分支 git branch 命令会列出所有分支,当前分支前面会标一个*号。 19 切换分支 git checkout <分支> git checkout master 这个也在 仓库里 为什么这个分支的会 主分支没变 git 只能检测 二进制文件的改变 所以js文件 可能(不知道js是不是二进制文件)检测不到 20.合并分支 git merge <分支> git merge dev 1.'快进模式'Fast-forward 也就是直接把master指向dev的当前提交,所以合并速度非常快。 21.删除分支 git branch -d <分支> git branch -d dev 22. Your branch is ahead of 'origin/master' by 1 commit. 比远程分支超前一个分支 23.查看合并情况 git log --graph --pretty=oneline --abbrev-commit 用git log --graph命令可以看到分支合并图。 24.合并冲突 合并冲突后 git会在冲突文件提示 <<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> feature1 手动更改后 再add commit 生成一个合并修理后的记录 25.禁用Fast forward模式 git merge --no-ff -m "merge with no-ff" dev --no-ff 表示禁用Fast forward 模式 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit 26.git stash 将当前工作区现场'隐藏'起来 等以后回复继续工作 27.git stash list 查看 '隐藏'的工作区在哪里 28.恢复工作区 1.git stash apply 恢复不删除 git stash drop 删除 2.git stash pop 恢复的同时删除 3.git stash list 查看隐藏工作区 29.多次stash 恢复指定的stash git stash apply stash@{0} 没做完我要去解决个'bug' 测试完 bug 回来这里还在。 然后我要把这里的工作完成 并commit一次 然后远程推送合并dev 30.git branch -D <name> 强行删除分支 没有合并 git 会提醒 31.git remote 查看远程库 git remote -v 更详细信息 上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。 一般工作用4个分支 1.master 主分支 需要时刻同步 2.dev 开发分支 共同开发所以也要随时同步 3.bug bug 分支 主要用于本地修复bug 4.feature 新功能分支 同不同不看自己 32.git checkout dev origin/dev 创建远程分支<name>到本地 33.多人协作冲突 坑死我的路劲问题 -_-。 1.克隆下来 git clone Git 会自动为你将此远程仓库命名为 origin,并下载其中所有的数据,建立一个指向它的 master 分支的指针, 在本地命名为 origin/master,但你无法在本地更改其数据。接着,Git 建立一个属于你自己的本地 master 分支, 始于 origin 上 master 分支相同的位置,你可以就此开始工作 2.到克隆的文件路径去 这是真的 3.git remote 检查本地 指向远程分支 指针的名字 origin 4.git branch 查看本地分支 此时只有一个 master(就算远程上有其他分支) 5.git checkout -b dev origin/dev 创建与远程相同的本地分支 6.可以我们的操作了。。。。。你是风儿.... 7.git push origin <分支名> 8.git pull 解决冲突 先拉下来 9.git branch --set-upstream-to=origin/dev dev 本地分支与远程分支链接 没拉下来是没有建立连接(少做 git checkout -b dev origin/dev ) 34.git rebase 变基 现在还没用上 35.git tag <标签名>创建标签 方便找 git tag stop-fast 902c8eaa git show 查看标签 创建带有说明的标签,用-a指定标签名,-m指定说明文字: git tag -a v0.1 -m "version 0.1 released" 1094adb 36. 命令git push origin <tagname>可以推送一个本地标签; 命令git push origin --tags可以推送全部未推送过的本地标签; 命令git tag -d <tagname>可以删除一个本地标签; 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。 37.git remote rm origin 删除本地指向 远程的指针 再关联其他远程仓库 38.关联多个远程库 多个远程库不能使用默认远程库名 origin 1.git remote rm origin 删掉已关联的库 2.git remote add github git@github.com:....... ↑ 39.配置git 1.git config --global color.ui true 让git 更好看 2.git config --global --list 查看配置 40.忽略特殊文件 .gitignore 参照:https://www.cnblogs.com/kevingrace/p/5690241.html 1.取消 untracked files 提示 touch .gitignore 在Git工作区的根目录下创建一个特殊的.gitignore文件 git就不会提示 2.git check-ignore 检查.gitignore文件 3.全局屏蔽文件 git config --global core.excludesfile '~/.gitignogtire' linux git config --global core.excludesfile "%USERPROFILE%\.gitignore" windows 41. git add -f App.class -f 强制添加 42.配置别名 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375234012342f90be1fc4d81446c967bbdc19e7c03d3000 42.1.添加别名 git config --global alias.<新命令> <旧命令> 1.git config --global alias.st status 2.git config --global alias.co checkout 3.git config --global alias.ci commit 4.git config --global alias.br branch 5.git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" 6.git config --global alias.mg merge 7.git config --global alias.unstage 'reset HEAD --' 8.git config --global alias.last 'log -1 HEAD' 参照:https://blog.csdn.net/weixin_40969748/article/details/80886531 add、commit两个命令合为一个 version 2.17 只能用cm 9.git config --global alias.cm '!f() { git add -A && git commit -m "$@"; }; f' 使用时只需要 git cm "内容" 将add、commit、push 三个命令合为一个 10.git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f' 使用时只需要 git cmp "内容" 11.git config --global alias.bd 'branch -D' 42.2.取消别名 1.git config --global --unset alias.<名称> 42.3 win10下全局配置目录 C:\Users\Administrator\.gitconfig 发现新建是字符串。 43. --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。 44. 配置服务器 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000 //==================================================== 阮一峰 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 45.查看远程仓库 git remote show origin 克隆下来的时候有用 46.检查文件在.gitignore文件的哪条忽略规则中 git check-ignore -v App.class 47.私人项目 1.添加协作者 发送邀请链接 2.用本人账号,打开邀请链接,接受邀请 */ /** 自建服务器 参照 https://blog.csdn.net/w252064/article/details/82691343 1. # yum info git //查看 yum 源仓库的 Git 信息 //卸载低版本的 Git 4. # yum remove git //下载新版的 Git 源码包(我放的了 /usr/local/git 的目录下了,git是我自己mkdir的目录) 5. # cd git 6.wget https://github.com/git/git/archive/v2.20.1.tar.gz tar -xzvf v2.20.1.tar.gz # cd git-2.20.1 9. # make prefix=/usr/local/git all 10. # make prefix=/usr/local/git install 11.添加到环境变量 vim /etc/profile export PATH="/usr/local/git/bin:$PATH" 将git设置为默认路径,不然后面克隆时会报错 # ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack # ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack # groupadd git # useradd git -g git # passwd git #参数是用户名 # su - git //切换git用户 【注】最好切换到git用户 不然后面新建的git仓库都要改权限 创建证书登录 # cd /home/git/ # mkdir .ssh #新建文件夹 # chmod 700 .ssh # touch .ssh/authorized_keys #新建文件 # chmod 600 .ssh/authorized_keys 生成密钥 git config --global user.name 'gitandjob' git config --global user.email '2215861173@qq.com' //-------------上面这个不知道为什么还要链接github https://blog.csdn.net/martinwangjun/article/details/78780885 /home/git:/bin/git-shell /home/git:/usr/local/git/bin/git-shell 克隆 http://test_data.lsing.top/gitmdata/gitmdata.git git clone git@github.com:mikepxq/templateBasis.git git clone git@test_data.lsing.top:/www/wwwroot/m-data.t/gitmdata/gitmdata.git 打开linux RSA 认证 vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys git init -bare */ /** git 部署生成代码 https://blog.csdn.net/bencjl/article/details/53699684 解决远程不会自动更新 https://blog.csdn.net/xsthunder/article/details/51867505 */