1、Git工具的安裝html
1)centos系統下安裝linux
1.1)查看環境git
[root@gitlab ~]# rpm -qa centos-release centos-release-7-4.1708.el7.centos.x86_64 [root@gitlab ~]# uname -a Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@gitlab ~]# getenforce Disabled [root@gitlab ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
1.2)yum安裝,yum 工具github
#centos 自帶git [root@gitlab ~]# rpm -qa git git-1.8.3.1-11.el7.x86_64 #安裝方法 yum install git -y
1.3)編譯安裝。建議使用編譯安裝。自帶的git版本較低vim
git工具下載:https://github.com/git/git/releasescentos
# 安裝依賴關係 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # 編譯安裝 tar -zxf git-2.0.0.tar.gz cd git-2.0.0 make configure ./configure --prefix=/usr make make install
yum install autoconf -y服務器
yum install zlib-devel -yapp
yum install -y perl perl-develssh
2)Windows下安裝curl
過程略
2)git命令的基本使用,如顯示文件,建立文件
lenvovo@LENVOVO-PC MINGW32 /e/test $ mkdir git_test # 建立文件夾 lenvovo@LENVOVO-PC MINGW32 /e/test $ cd git_test/ # 進入文件夾 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test $ git init # git 初始化,生成 .git下的隱藏文件 Initialized empty Git repository in E:/test/git_test/.git/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cd .git/ # 進入隱藏文件 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!) $ ls # 顯示隱藏文件內容 config description HEAD hooks/ info/ objects/ refs/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!) $ cd .. lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ ls -a ./ ../ .git/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cat first_program.py def sayhi(name): print("hello world!",name)
git init # 初始化文件
3)提交文件
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git add first_program.py # 將代碼放入暫存區 warning: LF will be replaced by CRLF in first_program.py. The file will have its original line endings in your working directory. lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git commit # 存入暫存區,失敗,由於要代表是誰提交的代碼 *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'lenvovo@LENVOVO-PC.(none)') lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git config --global user.email "1257063655@qq.com" # 寫郵箱名 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git config --global user.name "lover" # 寫用戶名 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git commit # 再提交,會彈出一個文件,裏面必須添加爲何要提交文件 [master (root-commit) 8323763] git test commit 1 file changed, 2 insertions(+) create mode 100644 first_program.py lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git commit # 再提交,顯示沒有內容須要提交了 On branch master nothing to commit, working tree clean
4)修改文件回滾操做,前提是沒有git add
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: first_program.py Untracked files: (use "git add <file>..." to include in what will be committed) readme no changes added to commit (use "git add" and/or "git commit -a") lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cat first_program.py def sayhi(name): print("Hello sb!",name) print('user') print('Second change') lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git checkout first_program.py lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cat first_program.py def sayhi(name): print("Hello sb!",name) print('Second change')
5)命令總結
git add first_program.py # 將文件放入暫存區 git add . # 提交整個目錄與暫存區 git commit # 若是失敗須要要代表是誰提交的代碼 git config --global user.email "1257063655@qq.com" # 寫郵箱名 git config --global user.name "lover" # 寫用戶名 會彈出一個文件,裏面必須添加爲何要提交文件 git commit -m "second commit test" # 避免彈框,將爲何提交寫在後面 git status # 查看文件的狀態 git checkout first_program.py # 回滾操做,前提是沒有git add,還原到上次提交時的文件 # 提交以後的回滾 git log # 查看提交的日誌 git log --pretty=oneline # 忽略不重要的信息 git reset --hard HEAD^ # 回滾到上一次提交時 git reset --hard 8323763f7b5dfd365f593fb724346ce692bdc258 # 回滾到指定的版本號 git reset --hard 832376 # 寫上前6位就能夠了 # 若是關閉了命令行,找不到了版本號 git reflog # 回滾的最後招數,全部的操做記錄都顯示了,可查看到版本號
6)git 提交代碼
git使用帳號: 帳號:user03 密碼:123456 ====================================== mkdir -p /root/user_git cd /root/caojin_git/ git clone http://192.168.1.5/ODW/ProjectD_svr.git cd ProjectD_svr git checkout trunk 從線上拉取分支代碼 天天第一次執行的操做 cd /root/user_git/ProjectD_svr/ git pull 從服務器更新代碼到本地 ============================= # 修改代碼後 git status 查看差別文件 git diff 文件 ===對比無誤 git add test.py git commit -m "add test" 提交 第一次提交時 git config --global user.email "11111111@qq.com" git config --global user.name "user03" 再進行git commit git push 須要輸入用戶名,密碼
2、github的使用
1)建立好帳號後,建立項目
2)建立好項目後。操做提示
3)克隆建立的項目代碼
使用https的方式
4)修改代碼後上傳至GitHub倉庫
上傳代碼步驟總結
git clone https://github.com/xxxx/xxxxxxx # 克隆代碼到本地 修改文件以後 git add . git commit -m "first_commit" git config --global user.email "125@qq.com" git config --global user.name "you name" git push -u origin master # 上傳至遠程倉庫 輸入用戶名 輸入密碼
5)將已有的本地倉庫推送到GitHub倉庫中
在本地git倉庫裏面執行的操做都將上傳至GitHub
git remote add origin https://github.com/xxxx/xxxxxxx git push -u origin master
6)使用祕鑰的方式
先在本地生成祕鑰
再將祕鑰內容拷貝到GitHub的setting裏面:deploy keys裏只對該倉庫有效
SSH and GPG keys對全部倉庫有效:new ssh key
7)作了祕鑰以後,可使用ssh克隆GitHub倉代碼
git clone git@github.com:xxxx/xxxxxxx 修改文件 git add . git commit -m "change on linux" git push origin master
3、開發流程。GitHub的分支管理
1)分支使用流程
建立了分支以後,提交會顯示分支出來。
分支使用流程總結
git checkout -b dev # 建立dev分支 git branch # 查看分支 * dev # *,當前分支 master 主分支 提交...... git push origin dev # 提交到本身的分支上 git checkout master # 切換到 主分支 git branch # 查看分支 dev * master # 當前是在主分支
2)分支與主庫合併代碼
在主庫上 git pull 更新主庫代碼 Already up-to-date git merge dev # 合併分支的代碼 只能合併無相同的文件,有相同的文件,就有衝突 git status # 查看主庫和分支代碼不同的地方 both modified : first_program.py # 該文件都修改了 vim first_program.py # 查看文件差別,解決衝突 def sayhi(name): .... <<<<< HEAD 主庫代碼 ======= 都有的代碼 >>>>> dev 分支代碼 git add . git commit -m "test" git push origin master
須要使用比對工具軟件
3)若是主庫已經更新,分支繼續開發新代碼,合併時也須要處理衝突問題
4)保存當前環境的工做代碼
git stash # 把當前工做環境臨時保存 git stash apply # 恢復以前保存的臨時工做 git stash list # 查看臨時保存的列表 git stash drop # 刪除當前臨時保存的環境備份 git stash pop # 恢復並刪除臨時保存的備份
5)編輯不想維護,不想上傳的代碼
vim .gitignore # 編輯忽略不想要的上傳的文件
4、總結
多人開發的工做模式
1、首先,能夠試圖用git push origin branch-name推送本身的修改; 2、若是推送失敗,則由於遠程分支比你的本地更新,須要先用git pull試圖合併; 3、若是合併有衝突,則解決衝突,並在本地提交; 4、沒有衝突或者解決掉衝突後,再用git push origin branch-name推送就能成功
原來連接:https://www.cnblogs.com/alex3714/articles/5930846.html